/**
 * Project Name:opcenter-common
 * File Name:ExpressQueryUtils.java
 * Package Name:com.wdcloud.opcenter.common.utils.express
 * Date:2016年11月25日上午11:24:04
 *
 */

package com.vviton.zyhj.common.utils;

import com.alibaba.fastjson.JSONObject;
import com.show.api.ShowapiRequest;
import com.vviton.zyhj.common.content.ExpressConstants;

/**
 * ClassName:ExpressQueryUtils <br/>
 * Function: 快递单号查询工具类 <br/>
 * Date: 2016年11月25日 上午11:24:04 <br/>
 *
 * @author libo
 * @version
 * @since JDK 1.7
 * @see
 */
public class ExpressQueryUtils {

    /**
     *
     * getExpressInfo,(快递单号查询). <br/>
     * Author: libo <br/>
     * Create Date: 2016年11月25日 <br/>
     * ===============================================================<br/>
     * Modifier: libo <br/>
     * Modify Date: 2016年11月25日 <br/>
     * Modify Description: <br/>
     * ===============================================================<br/>
     *
     * @param simpleName 对应"快递公司查询"接口中的simpleName快递公司简称 必填
     * @param kddh 快递单号 必填
     * @return JSONObject 快递JSON对象信息
     * @throws Exception
     * @since JDK 1.7
     */
    public static JSONObject getExpressInfo(String simpleName, String kddh) throws Exception {

        ShowapiRequest req = new ShowapiRequest(ExpressConstants.EXPRESS_QUERY_URL, ExpressConstants.APPCODE);
        byte[] b = req.addTextPara(ExpressConstants.EXPRESS_COM, simpleName).addTextPara(ExpressConstants.EXPRESS_NU, kddh).getAsByte();

        //打印返回体
        String res = new String(b, "utf-8");
        //System.out.println(res);

        //下面是使用阿里的fastjson包解析。如果不需要，请使用自己的解析包
        JSONObject json = JSONObject.parseObject(res);
        //System.out.println(json.getJSONObject("showapi_res_body"));
        return json.getJSONObject(ExpressConstants.SHOWAPI_RES_BODY);
    }

    /**
     *
     * getExpressComList,(快递公司查询). <br/>
     * Author: libo <br/>
     * Create Date: 2016年11月25日 <br/>
     * ===============================================================<br/>
     * Modifier: libo <br/>
     * Modify Date: 2016年11月25日 <br/>
     * Modify Description: <br/>
     * ===============================================================<br/>
     *
     * @param expName 快递/物流公司名称(传空时，查询所有物流公司) 可选
     * @param maxSize 分页时,每页返回的最大记录数 可选
     * @param page 分页的页数 可选
     * @return JSONObject 公司列表信息JSON字符串
     * @throws Exception
     * @since JDK 1.7
     */
    public static JSONObject getExpressComList(String expName, String maxSize, String page) throws Exception {
        ShowapiRequest req = new ShowapiRequest(ExpressConstants.EXPRESS_QUERY_COM_URL, ExpressConstants.APPCODE);
        byte[] b = req.addTextPara(ExpressConstants.EXPRESS_NAME, expName).addTextPara(ExpressConstants.MAX_SIZE, maxSize).addTextPara(ExpressConstants.PAGE, page).getAsByte();

        //打印返回体
        String res = new String(b, "utf-8");
        //System.out.println(res);

        //下面是使用阿里的fastjson包解析。如果不需要，请使用自己的解析包
        JSONObject json = JSONObject.parseObject(res);
        //System.out.println(json.getJSONObject("showapi_res_body"));
        return json.getJSONObject(ExpressConstants.SHOWAPI_RES_BODY);
    }

    public static void main(String[] args) {

        try {
            //测试快递单号查询：
            JSONObject expressInfo = ExpressQueryUtils.getExpressInfo("shunfeng", "611121053392");
            System.out.println(expressInfo);

            //测试快递公司查询：
            /* JSONObject comInfoList = ExpressQueryUtils.getExpressComList("", "1000", "1");
             System.out.println(comInfoList);*/

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}
